/**
* @file MonitorModule.h
* @author
* @brief 监控模块类的声明定义
* @version 1.0
* @date 2020-08-20
*
* @copyright Copyright (c) 2020
*
*/

#pragma once

#include "events/SystemEvt.h"
#include "data_struct/base/TimeWorkBase/Cloners/FunctionCloner.hpp"
#include "data_struct/base/TimeWorkBase/ModuleBase.h"
#include "modules/AssistModule/TimeModule.h"
#include "rclcpp/rclcpp.hpp"

namespace behavior_controller
{
class MonitorModule : public ModuleCloner<MonitorModule>
{
public:
    MonitorModule(const rclcpp::Node::SharedPtr &ros_node);

    ~MonitorModule() {};

    void UpdateTime100Hz(const evt::Timer100Hz &evt);

    void UpdateTime2Hz(const evt::Timer2Hz &evt);

    void InstallFunctors();

private:
    rclcpp::Node::SharedPtr ros_node_;
};

} // namespace behavior_controller